Test Stub
SUTに対する間接入力を操作することで、SUTを検証する 参考
この図の通り
/mrsekut-book-4798178187/107.icon
こんな感じの関数があり
code:hs
f x = g x + 100
今は関数fのテストをしたいとすると、gには特定の値を返してもらってほしかったりする
gのテスト自体は別で書くので、ここではfに注目してテストをしたいので。
あるある
next.jsのuseRouterを内部で使っているhooksをテストしたいときに、useRouterのstubを作るとか
スタブとのやり取りを決して検証してはならない
スタブへの呼び出しは、最終的な結果を生み出すための一過程に過ぎない
仮のデータを提供してるだけ
テストの壊れやすさにつながる
実装の詳細
テストしたいことの本質ではないからってことね
「スタブとのやり取りの検証」って例えば何?
gpt-4.iconに書かせたコードの一部
内部でfetch処理が書かれているのでこれを置き換えないとテストできない
code:ts
// 成年かどうかを判定する関数
// 内部でgetuserFromDBする関数に依存している
async function isUserAdult(userId: string): Promise<boolean> {
const user = await getuserFromDB(userId);
return user.age >= 18;
}
これはコード例がかなり微妙だと思うが、ノリは伝わる
jest